package de.preiscrawler.parser;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.Source;

import de.preiscrawler.AlleAnbieter;
import de.preisrobot.entity.Artikel;
import de.preisrobot.service.internal.PreisRobotParserException;

public class MindfactoryArtikelListParser extends AbstractParser<Artikel>{

	@Override
	protected void parseStream(List<Artikel> list, InputStream in)
			throws IOException, PreisRobotParserException {
		 
		Source s = new Source(in);
		List<Element> artikelItem = s.getAllElementsByClass("pa10_4");
		for (Element element : artikelItem) {
			
			// filter auf css classen/Elemente mit preis (element div class=...)
			List<Element> allElementsByClass = element.getAllElementsByClass("prod_preisbox floatRight");
			if(allElementsByClass.isEmpty())
				continue;
			
			Artikel a = new Artikel();
			MindfactoryArtikelItemParser p = new MindfactoryArtikelItemParser(element);
			p.parseArtikelItem(a);
			list.add(a);
		}
		
	}
	
	class MindfactoryArtikelItemParser extends AbstractArtikelItemParser
	{

		public MindfactoryArtikelItemParser(Element rootArtikelItem) {
			super(rootArtikelItem);
			 
		}

	
		@Override
		protected void parseArtikelBeschreibung(Artikel a) {
			List<Element> allElementsByClass = rootArtikelItem.getAllElementsByClass("prod_descr floatRight size11 colorblack");
			Element element = allElementsByClass.get(0);
			List<Element> allElements = element.getAllElements("a");
			Element aElem = allElements.get(0);
			String beschreibung = aElem.getTextExtractor().toString();
			a.setDesc(beschreibung);
			
		}

		@Override
		protected void parseArtikelKurzBeschreibung(Artikel a) {
		 
			List<Element> divkurzbez = rootArtikelItem.getAllElementsByClass("prod_bezname floatLeft");
			Element element = divkurzbez.get(0);
			List<Element> allElements = element.getAllElements("a");
			Element aelemKurzbez = allElements.get(0);
			String kurzbez = aelemKurzbez.getTextExtractor().toString();
			a.setArtikelPreislink(kurzbez);
		}

		@Override
		protected void parseArtikelNr(Artikel a) {
			List<Element> divkurzbez = rootArtikelItem.getAllElementsByClass("prod_bezname floatLeft");
			Element element = divkurzbez.get(0);
			List<Element> allElements = element.getAllElements("a");
			Element aelemKurzbez = allElements.get(0);
			String kurzbez = aelemKurzbez.getTextExtractor().toString();
			a.setArtikelNr(kurzbez);
			
		}

		@Override
		protected void parseImageLink(Artikel a) {
			List<Element> div_pic = rootArtikelItem.getAllElementsByClass("prod_pic floatLeft");
			Element element = div_pic.get(0);
			List<Element> allElements = element.getAllElements("img");
			Element imgElem = allElements.get(0);
			String imageLink = imgElem.getAttributeValue("src");
			
			if(! imageLink.startsWith("http://"));
				imageLink = "http://www.mindfactory.de"+imageLink;
			
			a.setImageLink(imageLink);			
		}

		@Override
		protected void parsePreis(Artikel a) {
			List<Element> divelem = rootArtikelItem.getAllElementsByClass("prod_preisbox floatRight");
			Element element = divelem.get(0);
			List<Element> preise = element.getAllElements("a");
			
			String euro = preise.get(0).getTextExtractor().toString();
			String cent = preise.get(1).getTextExtractor().toString();
			
			a.setPreis(euro+cent);

		}


		@Override
		protected void parseArtikelLink(Artikel a) {
			List<Element> divkurzbez = rootArtikelItem.getAllElementsByClass("prod_bezname floatLeft");
			Element element = divkurzbez.get(0);
			List<Element> allElements = element.getAllElements("a");
			Element aelemKurzbez = allElements.get(0);
			String link = aelemKurzbez.getAttributeValue("href");
			
			a.setArtikelLink(link);
		}
		
	}

	@Override
	public int getAnbieter() {
	 
		return AlleAnbieter.MINDFACTORY;
	}

}
